23

» WarCraft 3 / Оптимизация размера карты

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
ClotPh:
Кстати да, тоже интересно. Всегда просто удаляю второй. Я понимаю, что там скорее всего что-то несет информационную ценность, но оно бы тогда хотя бы настраивалось как-то в оптимизаторе, создавать его или не создавать и/или удалить после выполнения оптимизации, а то немного раздражает мусор руками чистить. Если такие настройки есть - подскажите плз.
Это скрип карты, для анализа на ошибки.
ответ
  1. Хорошая модель должна иметь минимальное необходимое количество полигонов. Что будет если заспавнить много юнитов можешь проверить и сам.
  1. 8 Мб - лимит для патчей до версии 1.26. В последнем патче карта может весить 100+ Мб. О скорости скачивания ничего не могу сказать.

23

» WarCraft 3 / Как устанавливать данную модель?

Похожие вопросы:

ответ
Если хочешь качественную анимацию,где двери шлюза закрываются,то сделай двери гармошкой.
А лучше сделать две модели дверей шлюза.Одни двери открыты,а другие закрыты.И менять их видимости в анимах.

23

» WarCraft 3 / Определение расы

Похожие вопросы:

ответ
поставить на пузу, либо добавить способность склад, установить скорость бега 0 и заблокировать способности, так же можно просто дамиком кинуть стан в этого юнита и удалять тригерно
ответ
Можно создать плейлист, но не гуишными функциями, а написав в кастом скрипте пути к музыке через точку с запятой.
call PlayMusicBJ("war3mapImported\\haruhazazimu9.mp3;war3mapImported\\auaunanodesu.mp3;war3mapImported\\confusingmelody.mp3")
Затем используя getlocalplayer можно используя сравнение расы играть нужный плейлист для каждого.
ответ
В редакторе. Сценарий > Свойства игрока > Выставляешь расу.

23

» WarCraft 3 / Как сделать прозрачность декорации?

Похожие вопросы:

ответ
такое есть (даже в 1.26), но чуть криво работает и недоступно в редакторе
это нужно вручную в war3map.doo выставить флаг 1 у нужных деревьев

P.S. редактор игнорирует флаги и просто заново перезаписывает дефолтными
ответ
Заменить декорацию нельзя, но можно сделать иллюзию замены.
1: Ставить декор один на другой и прятать/показывать нужный.
2: Проиграть анимацию, которая есть у модели (можно сделать кастомную модель из нескольких моделей).
Если в карте декора мало, то можно для замены использовать "разрушаемые".

23

» WarCraft 3 / Warcraft 3 вылетает.

Принятый ответ
Похожие вопросы:

ответ
Бэкапы надо было делать, мсье. Перед внесением каких-либо серьезных изменений.
ответ
Проблема решена.
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)

23

» WarCraft 3 / Редактор моделей

Похожие вопросы:

ответ
в mdlvis можно модель увеличить
ответ
Открываешь РО, смотришь указанный путь модели. Открываешь редактором MPQ-архивов файлы War3.mpq, war3x.mpq, war3patch.mpq war3xlocal.mpq - не уверен.
ответ
вот сделал ее уменьшеной ,посори через модель эдитор как я эт сделал
если модел едитор неоткроет скачай нормальный
ответ
возможно русские символы в пути до программы или в названии модели

23

» WarCraft 3 / С чего начать?

Похожие вопросы:

ответ
Мне не тру. Подсказываю самый простой способ:
  • Для начала, стоит скачать карту, которую хочешь перевести. Очень важно, чтобы она была не на русском, иначе перевод карты теряет смысл.
  • Открыть карту в World Editor.
  • Если карта запротекчена, нужно воспользоваться программой по взлому. Их очень легко найти самостоятельно.
  • Карта открыта. Теперь можно переводить её. Для этого стоит пройтись по редактору объектов и игровому интерфейсу.
  • Если есть сложности с переводом, можно воспользоваться гугл-переводчиком. Но содержание углепластика в тексте карты резко возрастёт.
  • Сохраняем карту.
  • ???
  • PROFIT!
На правах капитана.
ответ
Советую проверять бекапы один за другим, и в том, в котором впервые возникает такая проблема, и искать ошибку, она наверняка где-то в изменениях относительно хронологически предыдущей версии.

23

» WarCraft 3 / Способность на выбранную область

Похожие вопросы:

ответ
Это можно сделать только с помощью триггеров, примерно так:
ответ
заносишь все области в массивы и прогоняешь циклом.
ответ
  1. прячем героя, вешаем дамми или эффект на цель
делаем проверку на нейтрала, если да - даем контроль и скилл для выхода
  1. при событии входа в регион делаем проверку на наличие предмета
если есть - делаем нужное действие

все необходимые действия и проверки есть в триггерах
если попытки действительно имели место - в студию
ответ
Используем дамми юитов, варианты реализации:
  1. При касте способности перебор всех юнитов в радиусе от точки каста и каст даммиком способности молот бурь или любой другой стан
  2. При касте способности каст стомпа даммиком в центре каста способности

23

» WarCraft 3 / Подскажите карты для 1 человека.

Похожие вопросы:

ответ
Нужно использовать всем игрокам эту прогу и скинуть логи потом.
ответ
Можно:
  • Создать проект, пройти модерацию и добавить в него ресурс с вакансией — он появится в ленте ресурсов.
  • Написать в свой блог, запись будет в ленте блогов, соответственно.
  • Обратиться сюда (но этот ресурс, вроде, не особо активен.
Но в «Вопросы» писать не надо.
ответ
С патча 1.27 максимальный размер карт для игры по сети - 128 мб.Насчёт платформ:
Battle.net не подойдёт?
Hamachi,например.
А вообще большинство платформ такого рода русские.Напр. Playground,iCcup,rubattle.
Есть ещё украинский сервер Алкар.

23

» WarCraft 3 / Возможно ли создание собственной карты путей?

Похожие вопросы:

ответ
Есть программа, но не на этом сайте. Названия не помню, поищи на Дотерских сайтах по вару. Возможность есть.

23

» WarCraft 3 / Создание способности триггером

Похожие вопросы:

ответ
Есть специальный ресурс , в котором ты можешь заказать способность , которую не можешь сделать сам.
ответ
8gabriel8, влзможно ты равкод оставлял у способности разный на разных уровнях.
ответ
Установить {переменная} = целевая точка создания способности.
Если случайная точка в области нужна, то можно так оставить.
Если нет - то стрелять не в случайную точку в области, а просто в {переменную}.
ответ
zontik2012 нет, не является утечкой. Если бы ты крепил эффект к точке, к примеру в позиции юнита, причем не удалял бы эту точку потом - то это была бы утечка

23

» WarCraft 3 / Как изменить уровень способности в предмете

Похожие вопросы:

ответ
BaHeK, есть вроде
только чукча не читатель
Talgar2, есть 3 варианта
  1. давай абилки которые дают эффект со степенью двойки(например чтобы получить +12 надо дать абилки +8 и +4)
  2. используй баг с итемами
  3. используй мемхак

23

» WarCraft 3 / Помогите найти карту

Похожие вопросы:

ответ
Ты же понимаешь что под это описание подходит почти каждая ORPG прошлого? Как вариант могу предложить SOLs rpg, Помню ещё одну там ещё лошадей покупать можно было и там и правда город посередине но тоже забыл название. Описывай более особенные вещи или ищи сам вот тут www.epicwar.com/maps/search/?n=orpg&go=1
ответ
Увы но нет... Главная особенность той карты что все герои открываются по мере накопления очков за игру на карте, они не открыты сразу и не походу первой катки открываются а лишь с накоплением общих баллов. Я весь мозг сломал уже, в попытках вспомнить. Эх...
ответ
не карта, но есть подозрение, что это оно
ответ
По описанию похожа на Necris.

23

» WarCraft 3 / Помощь с триггерами

Принятый ответ
Похожие вопросы:

ответ
Steal nerves:
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
Сделал с перевоплощением. Спасибо за идею.
Rare:
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Вот, должно работать. Если понадобится временное подчинение - таймер поможет.
ответ
Afterdeath, ну если поймаешь меня сегодня-завтра в Discord'е (discord.gg/Rze5sGP), то могу сделать в лучшем виде.

23

» WarCraft 3 / Отлов автокаста стрел

Похожие вопросы:

ответ
событие - юнит получает урон
условие - юнит получивший урон имеет баф (баф стрелы)
Pippetz, лучше не яд а ледяные стрелы

23

» WarCraft 3 / Вопросы по мемхаку

Похожие вопросы:

ответ
фатал после игры может быть вызван
а) использованием malloc
б) копированием внутриигровых структур (например, структуру сплеша перенес от одного юнита другому, при чистке один раз адрес зачистился, а на втором проходе произошел краш)
в) неизвестным мне образом
ответ
Сделай сам.
ответ
DracoL1ch:
офсет 2589 *4 , я ж только что сказал
Всё, немного поковырявшись у меня получилось, нужно было еще (id * 4) еще раз умножить на 4. Теперь строки извлекает идеально.
Если кому-то интересно, выглядит это вот так:
	DWORD ReadPointer(DWORD addr)
	{
		return *(DWORD*)(addr);
	}

	DWORD GetJassContext(int id)
	{
		DWORD pJassEnvAddress = DWORD(GetModuleHandle(TEXT("Game.dll"))) + 0xADA848;
		return ReadPointer(ReadPointer(ReadPointer(ReadPointer(pJassEnvAddress) + 0x14) + 0x90) + id * 4);
	}

	DWORD GetStringTable()
	{
		DWORD pJassContext = GetJassContext(1);
		return ReadPointer(ReadPointer(pJassContext + 0x2874) + 0x8);
	}

	std::string from_jString(jString jstrHandle)
	{
		DWORD pStringTable = GetStringTable();
		const char* sptr = (const char*)ReadPointer(ReadPointer(pStringTable + ((jstrHandle * 4)*4) + 0x8) + 0x1C);
		return sptr;
	}
ответ
Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:

function LoadLibrary takes string nDllName returns integer
    if pLoadLibraryA == 0 then
        set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
    endif
    if pLoadLibraryA != 0 then
        return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
    endif
 
    return 0
endfunction

23

» WarCraft 3 / Способность не работает на деревьях

Принятый ответ
Похожие вопросы:

ответ
Engineer, я сбросил ему карту с другого сайта, где это реализовано. Открытая реклама на сайте запрещена)
ответ
Audes, это разве не стандартное "вырвать дерево" от Древ?
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
biridius, если это есть в РО, то прибегать к триггерам явно не обязательно.
ответ
в доте фрог решил просто превращением тини в модеьл с деревом, возможно нормального решения просто нет

23

» WarCraft 3 / Поменять расу

Похожие вопросы:

ответ
endryu, интерфейс динамически изменить нельзя с помощью стандартных действий, разве что через собственный патч, который взаимодействует с графической оболочкой игры.
ответ
Display as Neutral Hostile = true
ответ
XGM Bot:
Похожие вопросы:

ответ
Для отображения интерфейса необходима только модель, не нужно для ее роботы новых текстур.
ВарКрафт ссылается на модели для отображения гемплея, а в свою очередь модели ссылаются на текстуры.
Хитрость в том что можна создавать 15 моделей с одинаковыми текстурами.

ответ
Тоже всё сделал

23

» WarCraft 3 / ИИ не прокачивает способности героям

Похожие вопросы:

ответ
Прятать юнита, создавать дамми с нужными способностями. Если никто не сделает, возможно вечером попытаюсь (сейчас у меня утро) сделать.
ответ
]]Chupakabra[[, я понял. Крч на костылях придется лепить. Попробуй при выборе героя добавлять геройские абилки, а потом блочить или удалять их. Думаю, так можно добавить до 7 штук. Через ро не получается больше 5.
Если не получится - пробуй делать полностью триггерно с помощью спеллбука.
ответ
8gabriel8, влзможно ты равкод оставлял у способности разный на разных уровнях.
ответ
Арена, выживание.

23

» WarCraft 3 / Удаление эффекта

Похожие вопросы:

ответ
call DestroyEffect(AddSpecialEffect(e, x, y))
ответ
null - это нулевая строка, это не твой бро
"" - четкая строка без единого символа, это твой бро
да, игре похер, какой путь до модели, объект создается всегда
ответ
время смерти эффектов - игровая константа, по дефолту 5с, в константах ищи
ответ
>>В не правильно условий удаления?
Возможно идёт перезапись переменных, из-за чего не всё удаляется.
Актуально с глобалками
Смотрите в сторону мультиплеерности.
Если в ваших тестах с одним героем всё хорошо, то не факт что всё будет хорошо, если одновременно кастанутся 2 одинаковых спелла, которые построены на одних и тех же переменных.
ответ
После создания эффекта, следующей строчкой делаешь удаление.
Если он он создается на время, то заноси в переменную и когда надо удаляй.

23

» WarCraft 3 / Да что же это такое?!

Похожие вопросы:

ответ
Да у тебя куча дыр, во-первых ты не запустил триггер 115 области lumber direction, и оно соответственно не реагирует на событие. Во-вторых перепроверь gold проверку условия на да или нет в той карте которую ты отправил стоит нет
А золото не движется потому что ты ожидание 0,5 сек поставил а область в милисекунде от изначальной то есть триггер не успевает запуститься
ответ
Правильный ответ ДА и он здесь xgm.guru/p/renderedge/memoryhack?postid=408475#comment190
ответ
Прошлое имеет смысл оставаться в прошлом. Актуальные версии игры вроде бы скрытых вирусов не имеют, а за ремастер уже не так жалко отдать лишнюю тысячу рублей, как за оригинальную игру 2002-го. Правда отдавал эти деньги всё равно чрезмерно щедрый я... За Сашку, Илюшку.. ну а себе Deluxe.
ответ
Да ну нафиг,или я не правилно говорю или меня не правильно понимают
Думаю, два в одном.

23

» WarCraft 3 / Действие - ничего не делать

Похожие вопросы:

ответ
p >= 0 and p >= 3
ну это вообще пушка
и это p >= 4 and p >= 7
ответ
Всё, сорь за бред. Я "логические" ещё не сильно запомнил.
ответ
скачай этот файл и закинь его в папку AdicHelper\lib\ в папке с jngp
после в шапке карты напиши include "ifdebug.j"
и создай триггер с событием
игрок написал в чат ifdebug как точное совпадение
действие
кастом скрипт log()
после чего запусти карту и напиши в чат ifdebug
он выведет на экран все if/else/elseif через которые он прошёл (true в скобках в конце строки означает что значение в ифе истина)
ответ
Разрешённые цели - добавляешь "Здания"
Эффект на них работает, но без иконки снизу.
Только что потестил на "Доспехах веры"